package thread;

import java.util.Random;
import java.util.concurrent.CountDownLatch;

public class ThreadDemo39 {
    public static void main(String[] args) throws InterruptedException {
        //2.此处构造方法写10,表示有10个线程/任务
        CountDownLatch latch = new CountDownLatch(10);
        //创建出是个线程负责下载
        for (int i = 0; i < 10; i++) {
            int id = i;//变量捕获
            Thread t = new Thread(() ->{
                Random random = new Random();//休眠时间随机
                //[0,5)
              int time = (random.nextInt(5) + 1) * 1000;
                System.out.println("线程 " + id + "开始下载");
                try {
                    Thread.sleep(time);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.println("线程 " + id + "结束下载");
                //2.告知countDownLatch 我执行结束了
                latch.countDown();
            });
            t.start();
        }
        //3.通过这个await操作来等待所有任务结束,也就是countDown被调用10次了
        latch.await();
        System.out.println("所有任务已经执行完毕!");
    }
}
